An emulation system executes at a fast speed and generates a huge amount of data for post-emulation analysis such as, debugging, power-estimation, or the like. Briefly, the typical post emulation approach consists of a file-based flow that evolves through two steps. First, a simulator or emulator tracks the switching activity either cumulatively for the entire run in a switching activity interchange format (SAIF) file, or on a cycle-by-cycle basis for each signal in a signal database file such as file system database (FSDB) or value change dump (VCD). Then, a power estimation tool fed by the SAIF file calculates the average power consumption of a whole circuit, or an FSDB file computes the peak power in time and space of the design.
Traditional approaches to generating a Switching Activity Interchange Format (SAIF) data file involve dumping large amounts of data from the emulator, which suffers from one or more of the following limitations: 1) if all sequential and combinational signals are dumped from the emulator, the data transfer from the emulator is time-consuming due to limits on the data bandwidth from the emulator hardware; 2) extracting all sequential and combinational signals requires significant additional hardware resources inside the emulator, causing capacity or speed problems during emulation; or 3) if only sequential elements are dumped and all combinational signals are reconstructed offline using multiple parallel event-based simulators, the reconstruction process becomes slow.